package com.grantz.function.bbs.core.impl;

import java.time.LocalDateTime;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.grantz.function.bbs.core.entity.DiscussTypeEntity;
import com.grantz.function.bbs.core.inter.DiscussTypeService;
import com.grantz.function.bbs.core.jpa.DiscussTypeEntityJPA;
import com.grantz.model.bbs.DiscussTypeModel;
import com.grantz.utils.date.DateUtil;

import lombok.extern.slf4j.Slf4j;

/**
 * 文件名称： com.grantz.function.bbs.core.impl.DiscussTypeServiceImpl.java</br>
 * 初始作者： WenBin</br>
 * 创建日期： 2020年3月1日</br>
 * 功能说明： 这里用一句话描述这个类的作用--此句话需删除 <br/>
 *
 * =================================================<br/>
 * 修改记录：<br/>
 * 修改作者        日期       修改内容<br/>
 *
 *
 * ================================================<br/>
 *  Copyright (c) 2010-2011 .All rights reserved.<br/>
 */
@Service
@Slf4j
public class DiscussTypeServiceImpl implements DiscussTypeService {

	@Autowired
	private  DiscussTypeEntityJPA  dao;

	@Override
	public DiscussTypeEntity save(DiscussTypeEntity entity) {
		return dao.save(entity);
	}

	@Override
	public DiscussTypeModel add(DiscussTypeModel  model) {
		String randomCode= ""+((int)(Math.random()*9000)+1000);
		String  typeNo = DateUtil.toStringDateNYRSFM(LocalDateTime.now())+randomCode;
		DiscussTypeEntity entity  = new DiscussTypeEntity();
		if(model.getMotherNo() ==null ||  model.getMotherNo() == 0 ) {
			entity.setTypeNo(Long.valueOf(typeNo));
			entity.setMotherNo(0L);
		}else {
			DiscussTypeEntity  one =	dao.findOneByTypeNo(model.getMotherNo());
			if(one == null ) {
				return null;
			}
			entity.setTypeNo(Long.valueOf(typeNo));
			entity.setMotherNo(model.getMotherNo());
		}
		entity.setTypeName(model.getTypeName());
		entity.setStatus(model.getStatus());
		entity.setRemark(model.getRemark());
		entity = save(entity);
		return popOne(entity);
	}

	public  DiscussTypeModel  popOne(DiscussTypeEntity entity ) {
		DiscussTypeModel  model  = new DiscussTypeModel();
		model.setMotherNo(entity.getMotherNo());
		model.setTypeName(entity.getTypeName());
		model.setTypeNo(entity.getTypeNo());
		model.setId(entity.getId());
		model.setStatus(entity.getStatus());
		model.setRemark(entity.getRemark());
		return model ;
	}

	@Override
	public DiscussTypeModel update(DiscussTypeModel model) {
		DiscussTypeEntity  entity =	dao.findOneByTypeNo(model.getTypeNo());
		if(entity == null ) {
			return null;
		}
		entity.setMotherNo(model.getMotherNo());
		entity.setTypeName(model.getTypeName());
		entity.setStatus(model.getStatus());
		entity.setRemark(model.getRemark());
		entity = save(entity);
		return popOne(entity);
	}

	@Override
	public DiscussTypeModel findOneById(String id) {
		Optional<DiscussTypeEntity>  option = dao.findById(id);
		if(option.isPresent()) {
			return popOne(option.get());
		}
		return null;
	}

	@Override
	public DiscussTypeModel findOneByTypeNo(Long typeno) {
		DiscussTypeEntity  entity = dao.findOneByTypeNo(typeno);
		if(entity!=null) {
			return popOne(entity);
		}
		return null;
	}
}
